<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use \DB;
use \Hash;
use App\Http\Requests;
use App\Http\Requests\UserAddPostRequest;
use App\Http\Requests\HomeRequest;
use App\Http\Requests\EditPassPostRequest;
use App\Http\Controllers\Controller;
use Session;
use Mail;
use Germey\Geetest\CaptchaGeetest;
use Illuminate\Support\Facades\Config;

class RegisterController extends Controller
{
    use CaptchaGeetest;
	//显示后台注册页面
	public function register()
	{
		// 解析模板
		return view('home.register');
	}

	//显示后台登录页面
	public function sign()
	{
		// 解析模板
		return view('home.sign');
	}



	// 注册数据的处理
	public function doregister(HomeRequest $request)
	{
		$result = $this->validate($request, [
		      'geetest_challenge' => 'required|geetest',
		    ], [
		      'geetest' => Config::get('geetest.server_fail_alert')
		    ]);

		 	// 接受数据
    	$data=$request->only(['homeuserpassword','homeuseremail','homeusertel','homeusersex']);

    	$data['homeuserpassword']=Hash::make($request->input('homeuserpassword'));




    	// 后期需要修改的数据
    		// 1.用户编号需要拼接四个随机的数字	
			       $timeone=date('ymdHis',time());
			      		$b=rand(0001,9999);
			      		$i = (string)$b; 
			      		$bnum=strlen($i);
			      		switch ($bnum) {
			      			case '1':
			      					$bs='000'.$b;
			      				break;
			      			case '2':
			      					$bs='00'.$b;
			      				break;
			      			case '3':
			      					$bs='0'.$b;
			      				break;
			      			default:
	      							$bs=$b;
			      				break;
			      		}

    				$data['homeuserid']=$timeone.$bs;
    		// 2.用户注册时间
			        $timetwo=date('Y-m-d H:i:s',time());
    				$data['homeuserregtime']=$timetwo;
	    	// 3.用户是否激活
    			$data['homeuserstatus']='未激活';
	    	// 4.用户的token
    			$data['homeusertoken'] = str_random(50);

    		//7.用户的性别  其中M为先生  W为女士
    			$sex=$data['homeusersex'];	
    			switch ($sex) {
                    case 'M':
                        $sexs='先生';
                        break;
                    case 'W':
                        $sexs='女士';
                        break;
                    default:
                        break;
                }
               $data['homeusersex']=$sexs;	
               // 获取用户的邮箱 将邮箱插入session中
               $emails=$data['homeuseremail'];
           		session(['email'=>$emails]);

				// 获取完所有数据之后将数据插入数据库
		        $id=DB::table('homeuser')->insertGetId($data);
		        if($id){

		        	 $this->sendMail($id,$data['homeusertoken'],$data['homeuseremail']);
		            return redirect('activate')->with('success','数据添加成功');
		        }else{
		            return back()->with('error','数据插入失败');
		        }


	}

	// 发送邮件
	    public function sendMail($id,$token,$email)
    {
         Mail::send('home.emails', ['id'=>$id,'token'=>$token], function ($message)use($email) {
            $message->to($email)->subject('激活邮件');
        });        
    }





	// ajax检测手机号
	    public function homeusertel(Request $request)
	    {
	        $tel=$request->input('tel');
	        $res=DB::table('homeuser')->where('homeusertel',$tel)->first();
	        if($res){
	            // 为真 用户名已存在 返回 1 不能使用
	            echo 1;
	        }else{
	            // 为假 用户名不存在 返回 0 可使用
	            echo 0;
	        }
	    }

	// ajax检测邮箱
	    public function homeuseremail(Request $request)
	    {
	        $homeuseremail=$request->input('email');
	        $res=DB::table('homeuser')->where('homeuseremail',$homeuseremail)->first();
	        if($res){
	            // 为真 用户名已存在 返回 1 不能使用
	            echo 1;
	        }else{
	            // 为假 用户名不存在 返回 0 可使用
	            echo 0;
	        }
	    }


	 // 注册成功之后跳转到提示页面  
	  public function activate(Request $request)
	{

		$sessiondata = $request->session()->all();
        $sessionemail=$sessiondata['email'];

        // 获取字符串中的某一段的值
        $emailvalue = strstr($sessionemail, '@');
		$ae= trim($emailvalue, "@"); 


		// 解析模板
		return view('layout.email',['ae' => $ae]);
	}	  

	 //用户是否激活
	  public function activates(Request $request)
	{

		// 接受id
        $id=$request->input('id');
        // 查询用户
        $user=DB::table('homeuser')->where('id',$id)->first();
        // 判断token
        if($user && $user->homeusertoken == $request->input('token')){
            // 重新生成随机token
            $token=str_random(50);
            $res=DB::table('homeuser')->where('id',$id)->update(['homeuserstatus'=>'已激活','homeusertoken'=>$token]);
            if($res){
                return redirect('sign')->with('success','您已激活邮件,请登录');
            }else{
                echo '激活失败';
            }
        }else{
            echo '非法请求';
        }

	}	  




}
